//controller控制器层:接受前台数据并调用service层，和返回页面请求信息。（不允许直接操作数据库）
package com.nanhang.controller;

import com.nanhang.common.util.PageResult;
import com.nanhang.common.util.R;
import com.nanhang.entity.Student;
import com.nanhang.service.IStudentService;
import com.nanhang.vo.StudentVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;


import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/student")
public class StudentController {

	@Autowired
	private IStudentService studentService;

	// 学生列表
	@RequestMapping("/list")
	public R getStudent() {
		return R.ok().data("list",studentService.list());
	}

	// 分页查询
	@GetMapping("/findByPage/{page}/{pageSize}")
	public R findByPage(@PathVariable("page") Integer page,
	                    @PathVariable("pageSize") Integer pageSize) {
		PageResult<Student> pr = studentService.findByPage(page,pageSize);
		return R.ok().data("pr",pr);
	}
	// 条件带分页查询
	@PostMapping("/search/{page}/{pageSize}")
	public R search(@PathVariable("page") Integer page,
	                @PathVariable("pageSize") Integer pageSize,
	                @RequestBody(required = false) StudentVO vo){
		PageResult<Student> pr = studentService.search(page,pageSize,vo);
		return R.ok().data("pr",pr);
	}

	// 添加学生
	@PostMapping("/add")
	public R add(@RequestBody Student student){
		boolean flag = studentService.add(student);
		return flag ? R.ok().message("添加学生成功!") : R.error().message("添加学生失败!");//三目运算判断
	}

	//修改学生
	@PutMapping("/update")
	public R update(@RequestBody Student student){
		boolean flag = studentService.updateById(student);
		return flag ? R.ok().message("修改学生成功!") : R.error().message("修改学生失败!");//三目运算判断
	}


	// 用于根据传入的多个学生 ID 来批量删除学生记录，并根据实际删除操作的结果返回相应的成功或失败的响应信息给客户端。
	@DeleteMapping("/delete/{ids}")//处理以DELETE方法发送到/delete/{ids}这个路径的请求,{ids}是一个路径变量的占位符，在实际请求的 URL 中，这个部分会被具体的值替代。
	public R delete(@PathVariable("ids") String ids){  // 将请求路径中名为ids的路径变量绑定到方法的ids参数上。
		String[] split = ids.split(",");//对传入的ids字符串进行处理。接收到的ids像"1,2,3"这样用逗号分隔的多个值的字符串表示形式，通过调用split方法，以逗号作为分隔符，将这个字符串分割成一个字符串数组。
		List<String> sids = Arrays.asList(split);//用Arrays.asList方法将前面得到的字符串数组split转换为一个List<String>类型的列表。
		return studentService.removeByIds(sids) ? R.ok().message("删除学生成功!") : R.error().message("删除学生失败!");
	}
}
